package com.vanysoft.common.utils.Des;

/**
 * 类名称：StringReversal
 * 类描述：字符串移位运算
 * 创建人：X
 * 创建时间：2017年9月18日下午6:26:57
 * 修改人：X
 * 修改时间：2017年9月18日
 * 版本信息：@version 1.0
 * Copyright (c) 2017SharpClaw-版权所有
 * 修改备注：
 */
public class StringReversal {

//	public static void main(String args[]){
//		String Ciphertext = "UfNVpm8gqoizajbwpFvP+Gn3wMzy8dZe/7Mdw+opPgk=";
//		String reStr = leftMoveIndex(Ciphertext,3);
//		System.out.println(reStr);
//		String reStrB = rightMoveIndex(reStr,3);
//		System.out.println(reStrB);
//	}

    /**
     * 反转字符串（循环交换）
     * 其他字符串反转的方法
     * 1、java的api：StringBuffer的reverse方法
     * 2、利用栈的特性（先进后出）
     * 3、反向遍历字符串
     *
     * @param from
     * @return
     */
    public static String reChange(String from) {
        char[] froms = from.toCharArray();
        int length = froms.length;
        for (int i = 0; i < length / 2; i++) {
            char temp = froms[i];
            froms[i] = froms[length - 1 - i];
            froms[length - 1 - i] = temp;
        }
        return String.valueOf(froms);
    }

    /**
     * 循环左移index位字符串
     * 思想：先部分反转，后整体反转
     *
     * @param from
     * @param index
     * @return
     */
    public static String leftMoveIndex(String from, int index) {
        String first = from.substring(0, index);
        String second = from.substring(index);
        first = reChange(first);
        second = reChange(second);
        from = first + second;
        from = reChange(from);
        return from;
    }

    /**
     * 循环右移index位字符串
     * 思想：先整体反转，后部分反转
     *
     * @param from
     * @param index
     * @return
     */
    public static String rightMoveIndex(String from, int index) {
        from = reChange(from);
        String first = from.substring(0, index);
        String second = from.substring(index);
        first = reChange(first);
        second = reChange(second);
        from = first + second;
        return from;
    }


}
